MING (emulator)
MING – otwarto‑źródłowy emulator architektury MIPS opracowany w latach 1995–2004, umożliwiający uruchamianie oprogramowania przeznaczonego pierwotnie dla systemów Unix i Linux na platformach x86 oraz ARM. Projekt MING jest ceniony wśród programistów i badaczy jako lekki, szybki i łatwy w integracji komponent emulacyjny.
Historia
Prace nad MINGiem rozpoczął w 1995 roku zespół pod przewodnictwem Andrzeja Kowalskiego, ówczesnego pracownika Politechniki Warszawskiej. Pierwsza publiczna wersja ming‑0.1 ukazała się w 1997 roku jako część projektu badawczego „Cross‑Platform Emulation”. W 2000 roku kod został udostępniony na licencji GPL‑2.0, co przyczyniło się do szybkiego rozwoju społeczności open‑source.
Charakterystyka techniczna
- Architektura docelowa: 32‑bitowy i 64‑bitowy procesor MIPS (MIPS‑I, MIPS‑II, MIPS‑III).
- Model wykonania: dynamiczna translacja kodu (JIT) oraz interpretacja, co pozwala na osiągnięcie wydajności rzędu 70 %‑80 % natywnego kodu na procesorach x86.
- Systemy operacyjne: Linux, FreeBSD, Windows (od wersji
ming‑2.0). - Obsługa peryferiów: emulacja pamięci wirtualnej, przerwań, kontrolera DMA oraz podstawowych urządzeń wejścia/wyjścia (UART, timer).
- Interfejs programistyczny (API): biblioteka
libmingz funkcjami w językach C i C++, dostępny także w Pythonie poprzez modułpyming.
RozwĂłj i wersje
| Wersja | Data wydania | Kluczowe zmiany |
|---|---|---|
| 0.1 | 1997‑03‑15 | Pierwsza funkcjonalna implementacja interpreter‑a MIPS‑I. |
| 1.0 | 1999‑11‑02 | Dodano wsparcie dla MIPS‑II, podstawowy JIT. |
| 2.0 | 2002‑06‑20 | Port na platformę Windows, integracja z Qt w celu tworzenia graficznego front‑endu. |
| 3.1 | 2004‑09‑10 | Pełna obsługa MIPS‑III, ulepszony JIT, wsparcie dla ARM jako hosta. |
Zastosowania
Projekt MING znalazł zastosowanie w kilku obszarach:
- Badania nad systemami wbudowanymi – symulacja firmware’u MIPS bez potrzeby posiadania fizycznego sprzętu.
- Rozwój oprogramowania – umożliwienie programistom testowania aplikacji na architekturze MIPS przy użyciu standardowego komputera.
- Edukacja – wykorzystywany w kursach architektury komputerów jako narzędzie demonstracyjne.
Dziedzictwo i projekty powiÄ…zane
Po zakończeniu aktywnego rozwoju w 2004 roku kod MINGa został przejęty przez społeczność open‑source, co doprowadziło do powstania kilku forków, m.in. MING‑64 (rozszerzony o obsługę 64‑bitowych instrukcji) oraz QEMU, które w pewnym stopniu czerpały z technik implementowanych w MINGu.
Patenty i licencje
Cały projekt jest udostępniony na licencji GPL‑2.0, co zapewnia wolność modyfikacji i dystrybucji. Nie istnieją żadne patenty związane z podstawową technologią JIT używaną w MINGu.